///界面间通讯
abstract class Contact {
  ///左边传递的参数，调用[open]传递的参数、调用[parentSend]传递的参数
  dynamic parentArguments;

  ///右边边传递的参数，调用[close]传递的参数、调用[childSend]传递的参数
  dynamic childArguments;

  ///左边界面的回调，可以接收右边界面发送来的数据
  Function(dynamic arguments)? parentCallback;

  ///右边界面的回调，可以接收左边界面发送来的数据
  Function(dynamic arguments)? childCallback;

  ///第一个页面给第二个页面通讯。
  parentSend({dynamic arguments}) {
    parentArguments = arguments;
    childCallback?.call(parentArguments);
  }

  ///第一个页面接收数据。
  parentReceive(Function(dynamic arguments) callback) {
    parentCallback = callback;
  }

  ///第二个页面给第一个页面通讯。
  childSend({dynamic arguments}) {
    childArguments = arguments;
    parentCallback?.call(childArguments);
  }

  ///第二个页面接收数据。
  childReceive(Function(dynamic arguments) callback) {
    childCallback = callback;
  }
}
